package com.shouhuyun.dao;

import com.github.pagehelper.Page;
import com.shouhuyun.pojo.Role;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface RoleDao {

    // 增添一个role基本信息
    void add(Role role);

    // 根据用户id 查询用户所拥有的的角色
    Set<Role> findByUserId(Integer userId);
    // 创建role和permission的关联关系
    void setRoleAndPermission(Map<String, Integer> map);
    // 创建role和menu的关联关系
    void setRoleAndMenu(Map<String, Integer> map);


    List<Role> findAll();

    // 根据条件分页查询  role信息
    Page<Role> selectByCondition(String queryString);
    // 根据id查询角色
    Role findById(Integer id);
    // 根据角色id查询相关联的权限ids
    List<Integer> findPermissionIdsByRoleId(Integer id);
    // 根据角色id查询相关联的菜单ids
    List<Integer> findMenuIdsByRoleId(Integer id);
    // 清理角色和权限的关系
    void deleteAssociationPermission(Integer id);
    // 清理角色和菜单的关系
    void deleteAssociationMenu(Integer id);
    // 修改角色基本信息
    void edit(Role role);
    //判断当前角色是否已经关联到用户
    long findCountByRoleId(Integer id);
    // 删除角色和权限的关系
    void deleteByIdInRoleAndPermission(Integer id);
    // 删除角色和菜单的关系
    void deleteByIdInRoleAndMenu(Integer id);
    // 删除角色信息
    void deleteById(Integer id);

}
